package com.choudou5.solr.util.thread;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;

/**
 * @name TimerUtil 说明
 * @author choudou5
 * @date：2018-07-26
 */
public class TimerUtil {

    private static final Logger logger = LoggerFactory.getLogger(TimerUtil.class);

    private static Map<String, Timer> schedules = new HashMap<>();

    /**
     * 新建 定时 （执行1次）
     * @param name
     * @param task
     * @param delay 延迟（毫秒）
     */
    public static void newTimer(String name, TimerTask task, long delay){
        Timer timer = new Timer("task-"+name);
        timer.schedule(task, delay);
    }

    /**
     * 新建 定时 （循环执行）
     * @param name
     * @param task
     * @param delay 延迟（毫秒）
     * @param period 间隔周期 （毫秒）
     */
    public static void newTimer(String name, TimerTask task, long delay, long period){
        if(schedules.containsKey(name)) {
            logger.error("task {} 已存在, 不能再创建.", name);
            return;
        }
        Timer timer = new Timer("task-"+name);
        timer.schedule(task, delay, period);
        schedules.put(name, timer);
    }

    /**
     * 取消 定时
     * @param name
     */
    public static void cancel(String name){
        Timer timer = schedules.get(name);
        if(timer != null){
            try {
                timer.cancel();
            } catch (Exception e) {
                e.printStackTrace();
            }
            schedules.remove(name);
        }
    }
}
